#配置文件
"""解析配置文件，可以读，可以写"""
from os.path import dirname, abspath, join
import configparser

# 获取当前工程的绝对路径, __file__代表当前文件
#dirname方法是找当前（__file__）的父级目录，abspath(__file__)是找当前的文件的路径
PROJECT_PATH = dirname(dirname(abspath(__file__)))


class Config:
    def __init__(self, file=r"config.ini"):  # 配置文件必须放config下
        #join方法是将文件夹通过/来将路径进行组装
        self.file = join(PROJECT_PATH, 'config', file)  # 待操作的配置文件,即项目的绝对路径/config/file
        self.config = configparser.ConfigParser()
        self.config.read(self.file, encoding='utf-8')

    def _save(self):
        """完成保存功能"""
        with open(self.file, 'w', encoding='utf-8') as f:#
            self.config.write(f)#定义了一个内置函数，写完后去调用它即可写进去

    def section_dict(self, section):
        """返回指定区域的所有内容，返回类型是字典"""
        return dict(self.config.items(section))

    def get_value(self, section, option):
        return self.config.get(section, option)

    def get_env_value(self, option):
        return self.config.get('env', option)

    def add_option(self, section, option, value):
        if not self.config.has_section(section):
            self.config.add_section(section)
        self.config.set(section, option, value)
        self._save()  # 保存


cf = Config()
HOST = cf.get_value('env', 'host')
CASE_PATH = join(PROJECT_PATH, 'case')
REPORT_PATH = join(PROJECT_PATH, cf.get_env_value('report_dir'))

